﻿#ifndef __SS_MATERIAL_H__
#define __SS_MATERIAL_H__
#include "../ssComponent.h"
#include "../../shader/ssShader.h"
#include "../../3dMath/ssMatrix.h"
#include "../../shader/ssShaderUnifor.h"

namespace StarSeeker
{

class ssTransform;

class ssMaterial : public ssComponent
{
public:
	ssMaterial();
	virtual ~ssMaterial();

	//设置着色器
	void SetShader(ssShader* ps);
	//设置当前shader，必须比所有元件的OnRenderBegin先调用
	void SwitchShader();
	//设置矩阵给显卡
	virtual void SetShaderUniform();
	//渲染前
	virtual void OnRenderBegin();
	//渲染后
	virtual void OnRenderEnd();
protected:
	void OnAdd();

protected:
	ssTransform*			m_pTransform;		//模型视图矩阵
	ssShaderUniform			m_shaderModel;		//模型视图矩阵着色器参数
	ssShaderUniform			m_shaderView;		//相机视图矩阵着色器参数
	ssShaderUniform			m_shaderCamera;		//相机投影矩阵着色器参数
	ssShader*				m_pShader;			//着色器指针
public:
	static ssShader	*		s_pShader;
};

}
#endif
